/**
 * 尊敬的用户，你好：页面 JS 面板是高阶用法，一般不建议普通用户使用，如需使用，请确定你具备研发背景，能够自我排查问题。
 * 我们可以用 JS 面板来开发一些定制度高功能，比如：调用API接口，自定义动作执行等等。
 */

// 当页面渲染完毕后马上调用下面的函数，这个函数是在当前页面 - 设置 - 生命周期 - 页面加载完成时中被关联的。
export function didMount() {
    ("「页面 JS」：当前页面地址 " + location.href);
    const AREA_TASK_STAT_CHART = 'com_board_table_70p4nr';

    const self = this;
    const chartEle = self.$$(AREA_TASK_STAT_CHART);

    chartEle.data.props.loadingConfig.loading = true;

}


// 涉企检查次数排行
export function areaTaskStatOnChange() {
    const self = this;

    const AREA_TASK_STAT_CHART = 'com_board_table_70p4nr';
    const chartEle = self.$$(AREA_TASK_STAT_CHART);


    const API_LIST = {
        'AREA_TASK_STAT': "ds_api:a54d472a-4b3a-44e5-a5f3-e4f001835d9f", // api: 涉企检查次数排行
    }

    let taskStatType = self.$$("text_input_f7slfm").cValue;
    let {startTime, endTime} = getTimeParam(taskStatType);


    const typeParam = [{
        name: "regionId", valueContent: null
    }, {
        name: "startTime", valueContent: startTime
    }, {
        name: "endTime", valueContent: endTime
    }];


    // 评价满意度趋势
    fetchDdcatData(API_LIST.AREA_TASK_STAT, typeParam).then(res => {

        const transformedData = inputData.result.map(item => ({
            field1: item.regionName,
            field2: parseInt(item.count)
        }));
        chartEle.data.props.dataSource.options = transformedData || [];
        chartEle.data.props.loadingConfig.loading = false;
    });
}

function getTimeParam(taskStatType) {
    const today = new Date();
    const todayEnd = new Date(today.getFullYear(), today.getMonth(), today.getDate(), 23, 59, 59);

    // 格式化日期为 "YYYY-MM-DD HH:mm:ss"
    const formatDate = (date) => {
        const pad = (num) => num.toString().padStart(2, '0');
        return `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())} ` + `${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())}`;
    };

    let startTime;

    switch (taskStatType) {
        case "2": // 年统计
            startTime = new Date(today.getFullYear(), 0, 1, 0, 0, 0);
            break;
        case "3": // 月统计
            startTime = new Date(today.getFullYear(), today.getMonth(), 1, 0, 0, 0);
            break;
        case "4": // 周统计
            const mondayOffset = today.getDay() === 0 ? 6 : today.getDay() - 1;
            startTime = new Date(today.getFullYear(), today.getMonth(), today.getDate() - mondayOffset, 0, 0, 0);
            break;
        default: // 日统计
            startTime = new Date(today.getFullYear(), today.getMonth(), today.getDate(), 0, 0, 0);
    }

    return {
        startTime: formatDate(startTime), endTime: formatDate(todayEnd)
    };
}


function fetchDdcatData(sourceId, params) {
    const jsonParams = {pageSize: 99999};
    return api.DATA_SOURCE_EXECUTE(sourceId, "api", params, [], JSON.stringify(jsonParams)).then(res => {

        if (res && !res.hasError && res.result != null) {
            return JSON.parse(res.result);
        } else {
            console.warn("查询失败或数据为空，生成模拟数据");
            return [];
        }
    });
}
